#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <assert.h>
int main()
{
    printf("stdin->fd: %d\n", stdin->_fileno);
    printf("stdout->fd: %d\n", stdout->_fileno);
    printf("stderr->fd: %d\n", stderr->_fileno);
    umask(0);
    int fd0=open("log0.txt",O_WRONLY|O_CREAT);
    int fd1=open("log1.txt",O_WRONLY|O_CREAT);
    int fd2=open("log2.txt",O_WRONLY|O_CREAT);
    int fd3=open("log3.txt",O_WRONLY|O_CREAT);
    printf("fd0:%d\n",fd0);
    printf("fd1:%d\n",fd1);
    printf("fd2:%d\n",fd2);
    printf("fd3:%d\n",fd3);
    //assert(fd!=-1);
    //(void)fd;//防止警告
    //char buffer[1024];//我们自己定义的缓存区
    //ssize_t ret = read(fd,buffer,sizeof(buffer)-1);
    //if(ret > 0) buffer[ret]=0;//设置\0
    //printf("%s\n",buffer);
    //close(fd);
    //return 0;
    ////int cnt=5;
    ////while(cnt)
    ////{
    ////    sprintf(buffer,"%s:%d\n","aaaaa",cnt--);//sprintf把数据格式化成字符串
    ////    write(fd,buffer,strlen(buffer));//系统调用接口,这里不能+1带上\0！！！，这是文件，不是C语言，C语言的规则关我文件什么事，这样做会产生乱码等错误
    //}
    ////printf("fd:%d\n",fd);
    //close(fd);
    //return 0;
}
//// 我没有指明路径
//#define FILE_NAME(number) "log.txt"#number 
//
//// 每一个宏，对应的数值，只有一个比特位是1,彼此位置不重叠
//#define ONE (1<<0)
//#define TWO (1<<1)
//#define THREE  (1<<2)
//#define FOUR (1<<3)
//
//void show(int flags)
//{
//    if(flags & ONE) printf("one\n");
//    if(flags & TWO) printf("two\n");
//    if(flags & THREE) printf("three\n");
//    if(flags & FOUR) printf("four\n");
//}
//int main()
//{
//    show(ONE);
//    printf("-----------------------\n");
//    show(TWO);
//    printf("-----------------------\n");
//    show(ONE | TWO);
//    printf("-----------------------\n");
//    show(ONE | TWO | THREE);
//    printf("-----------------------\n");
//    show(ONE | TWO | THREE | FOUR);
//    printf("-----------------------\n");
//   // FILE* fp=fopen("log.txt","a");
//   // if(fp==NULL)
//   // {
//   //     perror("fopen");
//   //     return 1;
//   // }
//    //char buffer[64];
//    //while(fgets(buffer,sizeof(buffer)-1,fp)!=NULL)//因为fgets是C语言的库函数，其中的s表示string字符串，所以文件内容的结尾会有\0，这里-1去掉\0
//    //{
//    //    buffer[strlen(buffer)-1]=0;//这里把buffer的最后换行置0，因为puts可能打印的时候带了\n，而这里再加一个\n就会多空处一行
//    //    puts(buffer);
//    //}
//   // int cnt=5;
//   // while(cnt)
//   // {
//   //     fprintf(fp,"%s:%d\n","hello!",cnt--);
//   // }
//   // fclose(fp);
//    return 0;
//}
